# Pekiştirmeli Öğrenme (Reinforcement Learning)
**Pekiştirmeli öğrenme** (Reinforcement Learning - RL), bir ajanın, bir ortamda etkileşim kurarak, alacağı ödülleri maksimize etmeyi amaçlayan bir makine öğrenmesi dalıdır. Ajan, ortamdan aldığı geri bildirimlere (ödüller veya cezalar) göre davranışlarını öğrenir ve zamanla daha iyi kararlar almaya başlar. İnsanların ve hayvanların öğrenme süreçlerine benzerlik göstermesi nedeniyle ilgi çekici bir alandır.
## İçindekiler
1. [Giriş](#giriş)
2. [Temel Kavramlar](#temel-kavramlar)
* [Ajan](#ajan)
* [Ortam](#ortam)
* [Durum (State)](#durum-state)
* [Eylem (Action)](#eylem-action)
* [Ödül (Reward)](#ödül-reward)
* [Politika (Policy)](#politika-policy)
* [Değer Fonksiyonu (Value Function)](#değer-fonksiyonu-value-function)
* [Q-Fonksiyonu (Q-Function)](#q-fonksiyonu-q-function)
3. [Pekiştirmeli Öğrenme Türleri](#pekiştirmeli-öğrenme-türleri)
* [Model Tabanlı (Model-Based) RL](#model-tabanlı-model-based-rl)
* [Model Serbest (Model-Free) RL](#model-serbest-model-free-rl)
* [On-Policy ve Off-Policy Öğrenme](#on-policy-ve-off-policy-öğrenme)
* [Değer Tabanlı (Value-Based) ve Politika Tabanlı (Policy-Based) Yöntemler](#değer-tabanlı-value-based-ve-politika-tabanlı-policy-based-yöntemler)
4. [Pekiştirmeli Öğrenme Algoritmaları](#pekiştirmeli-öğrenme-algoritmaları)
* [Q-Learning](#q-learning)
* [SARSA](#sarsa)
* [Deep Q-Network (DQN)](#deep-q-network-dqn)
* [Policy Gradient Yöntemleri](#policy-gradient-yöntemleri)
* [REINFORCE](#reinforce)
* [Actor-Critic Yöntemleri](#actor-critic-yöntemleri)
* [A2C](#a2c)
* [A3C](#a3c)
* [DDPG](#ddpg)
* [TD3](#td3)
* [PPO](#ppo)
* [TRPO](#trpo)
5. [Pekiştirmeli Öğrenmenin Uygulama Alanları](#pekiştirmeli-öğrenmenin-uygulama-alanları)
* [Robotik](#robotik)
* [Oyunlar](#oyunlar)
* [Finans](#finans)
* [Sağlık](#sağlık)
* [Doğal Dil İşleme](#doğal-dil-işleme)
* [Tavsiye Sistemleri](#tavsiye-sistemleri)
6. [Pekiştirmeli Öğrenmenin Zorlukları](#pekiştirmeli-öğrenmenin-zorlukları)
* [Keşif ve Sömürü Dengesi (Exploration vs. Exploitation)](#keşif-ve-sömürü-dengesi-exploration-vs-exploitation)
* [Kredi Atama Problemi (Credit Assignment Problem)](#kredi-atama-problemi-credit-assignment-problem)
* [Kararlılık (Stability)](#kararlılık-stability)
* [Boyutluluk Laneti (Curse of Dimensionality)](#boyutluluk-laneti-curse-of-dimensionality)
7. [Sonuç](#sonuç)
8. [Ayrıca Bakınız](#ayrıca-bakınız)
9. [Kaynakça](#kaynakça)
## 1. Giriş <a name="giriş"></a>
Pekiştirmeli öğrenme, [denetimli öğrenme](https://www.nedemek.page/kavramlar/denetimli%20öğrenme) ve [denetimsiz öğrenme](https://www.nedemek.page/kavramlar/denetimsiz%20öğrenme) gibi diğer makine öğrenmesi paradigmalarından farklıdır. Denetimli öğrenmede, modelin öğrenmesi için etiketli veriler kullanılırken, pekiştirmeli öğrenmede ajan, ortamla etkileşime girerek ve aldığı ödüller doğrultusunda öğrenir. Denetimsiz öğrenmede ise etiketli veri olmadan verideki yapıları bulmaya çalışılırken, pekiştirmeli öğrenmede amaç, belirli bir görevi en iyi şekilde gerçekleştirmektir.
## 2. Temel Kavramlar <a name="temel-kavramlar"></a>
* **Ajan:** Öğrenen ve karar veren varlıktır.
* **Ortam:** Ajanın etkileşimde bulunduğu dış dünyadır.
* **Durum (State):** Ortamın belirli bir andaki durumunu temsil eder. Örneğin, bir robotun konumu ve hızı.
* **Eylem (Action):** Ajanın ortamda gerçekleştirebileceği hareketlerdir. Örneğin, bir robotun ileri gitmesi, sola dönmesi.
* **Ödül (Reward):** Ajanın belirli bir eylemi gerçekleştirmesi sonucunda aldığı geri bildirimdir. Pozitif ödüller, ajanı doğru davranışlara teşvik ederken, negatif ödüller (cezalar), yanlış davranışlardan kaçınmasını sağlar.
* **Politika (Policy):** Ajanın belirli bir durumda hangi eylemi gerçekleştireceğini belirleyen stratejidir. Politika, bir fonksiyon veya tablo olabilir.
* **Değer Fonksiyonu (Value Function):** Belirli bir durumda veya belirli bir politikayı takip ederek elde edilebilecek toplam ödülün beklentisidir. Değer fonksiyonu, ajanın hangi durumların daha değerli olduğunu anlamasına yardımcı olur.
* **Q-Fonksiyonu (Q-Function):** Belirli bir durumda belirli bir eylemi gerçekleştirmenin değerini temsil eder. Q-fonksiyonu, ajanın hangi eylemin hangi durumda daha iyi olduğunu anlamasına yardımcı olur. [Q-Öğrenimi](https://www.nedemek.page/kavramlar/Q-Öğrenimi) algoritmasında kullanılır.
## 3. Pekiştirmeli Öğrenme Türleri <a name="pekiştirmeli-öğrenme-türleri"></a>
* **Model Tabanlı (Model-Based) RL:** Ortamın modelini öğrenmeye çalışır. Bu model, ajanın gelecekteki durumları ve ödülleri tahmin etmesine olanak tanır. [Dinamik Programlama](https://www.nedemek.page/kavramlar/Dinamik%20Programlama) bu yaklaşıma bir örnektir.
* **Model Serbest (Model-Free) RL:** Ortamın modelini öğrenmek yerine doğrudan politika veya değer fonksiyonunu öğrenmeye odaklanır. [Monte Carlo Yöntemleri](https://www.nedemek.page/kavramlar/Monte%20Carlo%20Yöntemleri) ve [Temporal Difference Öğrenimi](https://www.nedemek.page/kavramlar/Temporal%20Difference%20Öğrenimi) bu yaklaşıma dahildir.
* **On-Policy ve Off-Policy Öğrenme:**
* **On-Policy Öğrenme:** Mevcut politika ile etkileşim kurarak öğrenir. [SARSA](https://www.nedemek.page/kavramlar/SARSA) algoritması buna örnektir.
* **Off-Policy Öğrenme:** Başka bir politika ile toplanan veriler üzerinden öğrenir. [Q-Learning](https://www.nedemek.page/kavramlar/Q-Learning) algoritması buna örnektir.
* **Değer Tabanlı (Value-Based) ve Politika Tabanlı (Policy-Based) Yöntemler:**
* **Değer Tabanlı Yöntemler:** Değer fonksiyonunu veya Q-fonksiyonunu öğrenmeye odaklanır. En iyi politikayı, bu değer fonksiyonlarından çıkararak belirler. [Q-Learning](https://www.nedemek.page/kavramlar/Q-Learning) ve [SARSA](https://www.nedemek.page/kavramlar/SARSA) örneklerdir.
* **Politika Tabanlı Yöntemler:** Doğrudan politikayı öğrenmeye odaklanır. Değer fonksiyonu, politikayı iyileştirmek için kullanılır. [REINFORCE](https://www.nedemek.page/kavramlar/REINFORCE) ve [Actor-Critic Yöntemleri](https://www.nedemek.page/kavramlar/Actor-Critic%20Yöntemleri) örneklerdir.
## 4. Pekiştirmeli Öğrenme Algoritmaları <a name="pekiştirmeli-öğrenme-algoritmaları"></a>
* **Q-Learning:** Off-policy, değer tabanlı bir algoritmadır. Q-fonksiyonunu iteratif olarak güncelleyerek en iyi politikayı bulmaya çalışır.
* **SARSA:** On-policy, değer tabanlı bir algoritmadır. Q-fonksiyonunu mevcut politika ile etkileşim kurarak günceller.
* **Deep Q-Network (DQN):** Q-Learning'in derin öğrenme ile birleştirilmiş halidir. Yüksek boyutlu durum uzaylarında çalışabilmek için Q-fonksiyonunu bir [derin sinir ağı](https://www.nedemek.page/kavramlar/derin%20sinir%20ağı) ile temsil eder.
* **Policy Gradient Yöntemleri:** Doğrudan politikayı optimize etmeyi amaçlar.
* **REINFORCE:** Monte Carlo yöntemini kullanarak politikayı günceller.
* **Actor-Critic Yöntemleri:** Hem politika (aktör) hem de değer fonksiyonu (eleştirmen) öğrenir. Aktör, ortamda eylemler gerçekleştirirken, eleştirmen, bu eylemlerin ne kadar iyi olduğunu değerlendirir ve aktöre geri bildirim sağlar.
* **A2C:** A3C'nin senkronize versiyonudur.
* **A3C:** Birden fazla ajan paralel olarak ortamla etkileşim kurar ve öğrenilen bilgileri merkezi bir sinir ağına gönderir.
* **DDPG:** Sürekli eylem uzaylarında çalışan bir actor-critic algoritmasıdır.
* **TD3:** DDPG'nin geliştirilmiş bir versiyonudur ve daha kararlı bir öğrenme süreci sunar.
* **PPO:** Güvenilir politika optimizasyonu sağlamak için kullanılan bir algoritmadır.
* **TRPO:** Politika güncellemelerini sınırlayarak kararlılığı artırmayı hedefler.
## 5. Pekiştirmeli Öğrenmenin Uygulama Alanları <a name="pekiştirmeli-öğrenmenin-uygulama-alanları"></a>
* **Robotik:** Robotların karmaşık görevleri öğrenmesi, otonom araçların kontrolü.
* **Oyunlar:** [Atari oyunları](https://www.nedemek.page/kavramlar/Atari%20oyunları), [Go](https://www.nedemek.page/kavramlar/Go), [Satranç](https://www.nedemek.page/kavramlar/Satranç) gibi oyunlarda insan seviyesini aşan performans sergilemesi.
* **Finans:** Portföy yönetimi, ticaret stratejileri geliştirme.
* **Sağlık:** İlaç keşfi, kişiselleştirilmiş tedavi planları oluşturma.
* **Doğal Dil İşleme:** Diyalog sistemleri, metin özetleme.
* **Tavsiye Sistemleri:** Kullanıcılara kişiselleştirilmiş öneriler sunma.
## 6. Pekiştirmeli Öğrenmenin Zorlukları <a name="pekiştirmeli-öğrenmenin-zorlukları"></a>
* **Keşif ve Sömürü Dengesi (Exploration vs. Exploitation):** Ajan, yeni durumları keşfetmeli mi yoksa bildiği en iyi eylemleri mi gerçekleştirmeli? Bu dengeyi sağlamak önemlidir.
* **Kredi Atama Problemi (Credit Assignment Problem):** Ajan, hangi eylemlerin hangi ödüllere yol açtığını nasıl belirleyecek? Özellikle uzun vadeli ödüller söz konusu olduğunda bu problem zorlaşır.
* **Kararlılık (Stability):** Derin öğrenme ile birleştirildiğinde, pekiştirmeli öğrenme algoritmaları kararsız hale gelebilir ve öğrenme süreci zorlaşabilir.
* **Boyutluluk Laneti (Curse of Dimensionality):** Durum ve eylem uzayları büyüdükçe, öğrenme süreci çok daha karmaşık hale gelir ve daha fazla veri gerektirir.
## 7. Sonuç <a name="sonuç"></a>
Pekiştirmeli öğrenme, yapay zekanın önemli bir dalıdır ve birçok alanda potansiyel uygulamalara sahiptir. Zorluklarına rağmen, bu alandaki araştırmalar hızla ilerlemekte ve gelecekte daha da gelişmesi beklenmektedir.
## 8. Ayrıca Bakınız <a name="ayrıca-bakınız"></a>
* [Makine Öğrenmesi](https://www.nedemek.page/kavramlar/Makine%20Öğrenmesi)
* [Derin Öğrenme](https://www.nedemek.page/kavramlar/Derin%20Öğrenme)
* [Yapay Zeka](https://www.nedemek.page/kavramlar/Yapay%20Zeka)
## 9. Kaynakça <a name="kaynakça"></a>
* Sutton, R. S., & Barto, A. G. (2018). *Reinforcement learning: An introduction*. MIT press.
* [OpenAI](https://openai.com/)
* [DeepMind](https://deepmind.com/)